/*******************************************************************************
ViewManager.h

	Manages the views and makes sure each view get's rendered.
*******************************************************************************/



#pragma once
#include <SFML/Graphics.hpp>	// RenderWindow
#include "EntityManager.h"		// The entity manager
#include "EntityResource.h"		// The entity data
#include "View.h"				// The view base class

#include "PaddleView.h"			// The PaddleView
#include "LevelView.h"			// The LevelView
#include "BallView.h"			// BallView

class ViewManager
{
public:
	// A destructor to clean up memory
	~ViewManager(void);
	// Allows access to the instance of ViewManager
	static ViewManager* GetManager(void);
	// Creates a view
	void CreateView(EntityID entityID, EntityResource& entityData);
	// Renders all views
	void Render(sf::RenderWindow& window);
protected:
	// Protected constructor to make sure no one creates a ViewManager
	ViewManager(void) {}
	// The instance of the ViewManager
	static ViewManager* m_pInstance;
	// The views that have been created;
	std::vector<View*> m_viewList;
}; // ViewManager